package com.cy.duosearch.langchain.tool;

import com.cy.duosearch.langchain.agent.AgentState;
import dev.langchain4j.agent.tool.ToolSpecification;
import lombok.Data;
import lombok.extern.slf4j.Slf4j;

@Data
@Slf4j
public class TerminateTool implements Tool{

     /**
     *     工具需要哪些参数
     *     工具是为了结束整个 agent调用链条，感觉这里不需要单独的状态，
     *     模型 只需要隐式调用完结程序就行，不需要传递参数到这个工具中
     *
      */



    @Override
    public ToolSpecification getToolSpecification() {
        return ToolSpecification.builder()
                .name(getClass().getName())
                .description("当请求被满足或助手无法继续完成任务时，终止交互。当您完成所有任务后，调用此工具以结束工作")
                .build();
    }

    @Override
    public ToolResult runTool() {
        ToolResult success = ToolResult.success("本次任务已经结束，即将结束交互;");
        success.setState(AgentState.FINISHED);
        //打印一条消息给人看
        log.info("agent 工作已经结束");
        return success;
    }
}
